#include "elementocolumna.h"

void ElementoColumna::imprimir(EstadoImpresion& estado, QRect rect)
{ 
    int margen = calcularMargen(estado);
    QRect rectInterior = rect.adjusted(margen, margen, -margen, -margen);
    
    estado.setPorcentajeColumna(porcentajeFinColumna);

    grupoElementos.imprimir(estado, rectInterior);

    if (estado.enModoTabla()) {
        estado.getPainter()->drawRect(rect);
    }
}

int ElementoColumna::calcularMargen(EstadoImpresion& estado)
{
    int margen = estado.getMargenCeldas() * estado.getPixelesPorMilimetro();
    if (estado.enModoTabla()) {
        margen += ceil(estado.getGrosorTrazoMilimetros() / 2 * estado.getPixelesPorMilimetro());
    }

    return margen;
}

QSize ElementoColumna::obtenerDimensiones(EstadoImpresion& estado) 
{ 
    int margen = calcularMargen(estado);

    int anchoColumna = (porcentajeFinColumna - porcentajeInicioColumna)
        * estado.getRectanguloImpresion().width() / 100.0;
    int alturaMaxima = grupoElementos.obtenerDimensiones(estado).height();
    
    return QSize(anchoColumna, alturaMaxima + 2 * margen); 
}

int ElementoColumna::obtenerDescenso(EstadoImpresion& estado)
{
    return grupoElementos.obtenerDescenso(estado);
}

